package com.example.demo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * Description 政策信息表
 *
 * @author 星星变奏曲
 * @version 1.0
 * @date 2021/6/10 15:35
 **/
@ApiModel(value = "com-uqian-policy-entity-PolicyInfo")
@Data
@TableName(value = "policy_info")
public class PolicyInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value = "id")
    private String id;

    /**
     * 资源ID（对应政策库中ES查询的ID）
     */
    @TableField(value = "file_id")
    @ApiModelProperty(value = "资源ID（对应政策库中ES查询的ID）")
    private Long fileId;

    /**
     * 资源md5
     */
    @TableField(value = "file_md5")
    @ApiModelProperty(value = "资源md5")
    private String fileMd5;

    @TableField(value = "file_name")
    @ApiModelProperty(value = "文件名称")
    private String fileName;

    @TableField(value = "file_ext")
    @ApiModelProperty(value = "扩展名")
    private String fileExt;

    /**
     * 标题
     */
    @TableField(value = "title")
    @ApiModelProperty(value = "标题")
    private String title;

    /**
     * 来源类型（0：采集 1：录入）
     */
    @TableField(value = "source_type")
    @ApiModelProperty(value = "来源类型（0：采集 1：录入）")
    private Integer sourceType;

    /**
     * 是否营商政策（0：否 1：是）
     */
    @TableField(value = "business_policy_flag")
    @ApiModelProperty(value = "是否营商政策（0：否 1：是）")
    private Integer businessPolicyFlag;

    /**
     * 政策发文层级(直接存字典表中文，只会有一层：国家/国务院、省/直辖市、地市)
     */
    @TableField(value = "region")
    @ApiModelProperty(value = "政策发文层级(直接存字典表中文，只会有一层：国家/国务院、省/直辖市、地市)")
    private String region;

    /**
     * 地区（字典表，只会有一个）
     */
    @TableField(value = "city_name")
    @ApiModelProperty(value = "地区（字典表，只会有一个）")
    private String cityName;

    /**
     * 发文机关
     */
    @TableField(value = "issue_agency")
    @ApiModelProperty(value = "发文机关")
    private String issueAgency;

    /**
     * 发文字号
     */
    @TableField(value = "issue_number")
    @ApiModelProperty(value = "发文字号")
    private String issueNumber;

    /**
     * 成文日期
     */
    @TableField(value = "written_date")
    @ApiModelProperty(value = "成文日期")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private LocalDate writtenDate;

    /**
     * 发布日期
     */
    @TableField(value = "issue_date")
    @ApiModelProperty(value = "发布日期")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private LocalDate issueDate;

    /**
     * 采集索引号
     */
    @TableField(value = "index_no")
    @ApiModelProperty(value = "采集索引号")
    private String indexNo;

    /**
     * 主责机构
     */
    @TableField(value = "main_agency")
    @ApiModelProperty(value = "主责机构")
    private String mainAgency;

    /**
     * 政策文件类型（直接存字典表中文，只会有一类）
     */
    @TableField(value = "policy_type")
    @ApiModelProperty(value = "政策文件类型（直接存字典表中文，只会有一类）")
    private String policyType;

    /**
     * 状态（0：待核验（人工上传） 1：已发布  9：已下架）
     */
    @TableField(value = "flag")
    @ApiModelProperty(value = "状态（0：待核验（人工上传） 1：已发布  9：已下架）")
    private Integer flag;

    /**
     * 营商指标类型（存字典表中文，多个用逗号隔开）
     */
    @TableField(value = "policy_quota_type")
    @ApiModelProperty(value = "营商指标类型（存字典表中文，多个用逗号隔开）")
    private String policyQuotaType;

    /**
     * 行业分类（政策的行业分类，如工业、农业等）
     */
    @TableField(value = "industries_type")
    @ApiModelProperty(value = "行业分类（政策的行业分类，如工业、农业等）")
    private String industriesType;

    /**
     * 适用行业（主要针对惠企政策，适合哪个行业的政策）
     */
    @TableField(value = "industries_scope")
    @ApiModelProperty(value = "适用行业（主要针对惠企政策，适合哪个行业的政策）")
    private String industriesScope;

    /**
     * 适用企业
     */
    @TableField(value = "enterprises_scope")
    @ApiModelProperty(value = "适用企业")
    private String enterprisesScope;

    /**
     * 是否置顶（0：否 1：是）
     */
    @TableField(value = "is_top")
    @ApiModelProperty(value = "是否置顶（0：否 1：是）")
    private Integer isTop;

    /**
     * 公开类型（0：全部公开 1：对部门公开 ）
     */
    @TableField(value = "open_type")
    @ApiModelProperty(value = "公开类型（0：全部公开 1：对部门公开 ）")
    private Integer openType;

    /**
     * 公开范围（存部门ID，多部门 逗号分隔）
     */
    @TableField(value = "open_scope")
    @ApiModelProperty(value = "公开范围（存部门ID，多部门 逗号分隔）")
    private String openScope;

    /**
     * 公开范围（存部门ID，多部门 逗号分隔）
     */
    @TableField(value = "open_scope_name")
    @ApiModelProperty(value = "公开范围（存部门name，多部门 逗号分隔）")
    private String openScopeName;

    /**
     * 主题分类（字典表）
     */
    @TableField(value = "themes")
    @ApiModelProperty(value = "主题分类（字典表）")
    private String themes;

    /**
     * 创建人
     */
    @TableField(value = "create_user")
    @ApiModelProperty(value = "创建人")
    private String createUser;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @TableField(value = "update_user")
    @ApiModelProperty(value = "更新人")
    private String updateUser;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 机构id
     */
    @TableField(value = "org_id")
    @ApiModelProperty(value = "机构id")
    private String orgId;

    /**
     * 机构名称
     */
    @TableField(value = "org_name")
    @ApiModelProperty(value = "机构名称")
    private String orgName;

    /**
     * 逻辑删除（0：否 1：是）
     */
    @TableField(value = "deleted")
    @ApiModelProperty(value = "逻辑删除（0：否 1：是）")
    private Integer deleted;

    /**
     * 关系状态 (0： 无，1：引用，2：延续 3 ：All)
     */
    @TableField(value = "rel_flag")
    @ApiModelProperty(value = "关系状态 (0： 无，1：引用，2：延续 3 ：All)")
    private Integer relFlag;

    /**
     * 标签状态（0：无，1：已打标签）
     */
    @TableField(value = "tag_flag")
    @ApiModelProperty(value = "标签状态（0：无，1：已打标签）")
    private Integer tagFlag;


    /**
     * 有效期(政策失效时间，设置默认值 2999-01-01)
     */
    @TableField(value = "validity_period")
    @ApiModelProperty(value = "有效期(政策失效时间，设置默认值 2999-01-01)")
    private LocalDate validityPeriod;

    /**
     * 原始有效日期
     */
    @TableField(value = "validity_period_orig")
    @ApiModelProperty(value = "原始有效日期")
    private String validityPeriodOrig;

}